#include "Casilla.h"

using namespace std;

/**
 * Constructor de Casilla
 */
Casilla::Casilla() {
	for(int i = 1; i < 10; i++) {
		posibles.push_back(i);
	}
}

/**
 * Devuelve 0 si hay multiples opciones o 
 * el numero de la casilla si hay una sola
 * posibilidad.
 */
int Casilla::getValor() {
	if(posibles.size() == 1) {
		return *(posibles.begin());
	}
	
	return 0;
}

/**
 * Remueve el numero num de los numeros posibles para
 * esta casilla.
 */
void Casilla::remove(int num) {
	posibles.remove(num);
}

/**
 * Setea el valor de la casilla a num
 */
void Casilla::setValor(int num) {
	posibles.clear();
	posibles.push_back(num);
}

list<int> Casilla::getPosibles() {
	return posibles;
}

void Casilla::setAleatorio() {
	int random_integer; 
    random_integer = (rand()%posibles.size()); 
    list<int>::iterator p = posibles.begin();
	advance(p, random_integer);
	
    setValor(*p);
}
